Electrostatic discharge (ESD) can cause a variety of problems in handheld devices such as cellular phones, camcorders, MP3 players, DVD players, or any other suitable portable device. Many such devices may incorporate multiple integrated circuits such as a main processor and various coprocessors. For example, cell phones that employ cameras may include, for example, multiple integrated circuits. By way of example, a graphics and multimedia coprocessor such as an Imageon™ sold by ATI Technologies Inc., 1 Commerce Valley Drive, Markham, Ontario, Canada, may be used with other suitable coprocessors or processors. High energy ESD pulses generated by the human body or other source can cause LCD panel images to get corrupted, flicker, freeze, fade, or cause other malfunctions in the apparatus when such coprocessors are effected by ESD events.
In the instance where the handheld device includes telephone circuitry, such as cell phone, ongoing calls can be dropped or the device may not respond to a user pressing keypads or activating another user interface. Susceptibility to electrostatic discharge damage can impact market capture and revenues generated by handheld device manufacturers. Therefore, ESD detection and recovery mechanisms have become increasingly important.
Clock generating circuits within a graphics and multimedia coprocessor, host processor, or any other integrated circuit in the device can play a central role in the proper functionality of the various integrated circuits and systems. Such clock generation circuits may include, but are not limited to, phase lock loop (PLL) clock generating circuits that can generate one or more output clock signals. For example, there may be multiple PLL circuits, such as one for audio, two or more for general system clock generation. These may in turn be increased or decreased in frequency by using suitable clock divider or clock multiplier circuits. Typically, an external source clock such as a crystal oscillator or any other suitable external source clock serves as a reference clock signal to the internal clock generation circuits. The clock generation circuits can generate multiple output clocks at different frequencies for different engines or circuits within a processor, for example. In the case of graphics and multimedia coprocessors, some internal engines may include, for example, a display engine that provides a pixel clock to the LCD display and outputs pixel information for display on the LCD display. Other engines may include a video imaging engine which is coupled to the camera to process the captured video image and provide it to the display engine for display. Also, 2D and 3D graphics engines, video processors, audio processors and other engines may also be incorporated as desired in such graphics and multimedia coprocessors, as known in the art. Since each of these engines, circuits or subsystems utilize one or more clocks for operation, the corruption of one or more of these clocks can cause the circuits and hence device to malfunction. For example, ESD corruption of phase lock loop locks and internal registers within a processor can result in the pixel clock not being present or other vital internal clocks not being locked to a particular frequency within a legitimate range.
Some known techniques for detecting clock malfunctions caused by ESD or other cause include, for example, a host processor such as a CPU that utilizes a software driver executing thereon to poll critical registers of critical operational blocks within a separate processor. For example, a status register of an external processor may be polled by the CPU via one or more suitable bus interfaces. Status bits such as phase lock loop clock enable bits can be monitored. If the bits show that the clocks have been disabled, the CPU determines that an ESD condition has occurred. However, such a system can be costly in handheld devices in terms of the power usage since the host processor needs to be used for the detection operation.
In addition, systems also typically rely on the host processor interface to also not be susceptible to this same ESD event that caused the problem in the coprocessor. To recover from the detected ESD event, the host processor typically updates the important registers with, for example, an image of the registers stored in system memory, or issues a software reset or a hardware reset to the corrupted subsystem.
In some systems, the system may also automatically update critical registers every few seconds with a stored backup of the information to provide an automatic recovery mechanism even though no error occurred. However, this can utilize unnecessary amounts of power when the device is battery powered. Also, such systems often do not provide any detection mechanism.
Another solution may be to have the host processor monitor external signals on a bus, for example, as opposed to looking at registers in the coprocessor and then generating a coprocessor reset when the CPU detects unexpected information on the external signals on the bus or other pin. Also, internal watchdog timer protocol monitors may be used to monitor information on top level buses. However, such systems will not detect all corruption cases since only a few of them would result in external pin state changes.
Accordingly, an improved error detection apparatus and/or recovery apparatus that overcame one or more the above drawbacks would be desirable.